In a Fibre Channel-to-SCSI router architecture, one SCSI initiator (interface), such as a SCSI router, can speak to SCSI targets on behalf of many Fibre Channel initiators (hosts). These Fibre Channel hosts can be attached to the SCSI router from many different interfaces. However, a SCSI target is only aware of the SCSI router interface connection to which it is directly attached. If two or more Fibre Channel hosts issue commands to the same target device, the target device sees all the commands as originating from the SCSI router. The target device is not aware of the individual Fibre Channel hosts.
Furthermore, in the SCSI architecture, a streaming target device, such as a tape back-up device, is a target device that must complete execution of one command before a subsequent command can be recognized, even if it is from the same host. A host issuing a subsequent command to a streaming target device that is still executing a prior command from the same or another host is issued a check condition (overlapped_cmd) response by the streaming target device. This can result in loss of the subsequent command and disruption of I/O transmissions.
Most currently existing Fibre Channel host drivers provide support only to random access devices, such as disk devices, that support tagged command queuing. Tagged command queuing is a method for managing commands to and from target devices that allows a host to issue multiple commands to a target device with a "tag" attached to the command. A target device receiving a tagged command will complete the command and upon completion return a "command complete" message to the issuing host with a corresponding tag informing the host that the particular command identified by that tag is complete. The host, meanwhile, can issue additional commands before the first command (or any subsequent command) completes, and keep track of completed commands by the return tag data from the target device. In this way, a Fibre Channel host can keep track of which completion is related to which command. Command tag queuing increases the I/O performance for most random access devices such as disk devices.
However, streaming target devices (such as tape backup devices) as a general rule do not support tagged command queuing. This is because of the inability of streaming target devices to process more than one command at a time. To a streaming target device, a tagged command indicates that it will receive multiple concurrent commands. A streaming target device receiving a tagged command assumes that because the command is tagged the host issuing the command will also issue subsequent commands before the first command has executed. Streaming target devices will therefore reject any tagged command. Currently existing Fibre Channel host drivers can thus cause a disruption of I/O transmissions by issuing a tagged command to a streaming target device.
Although some currently existing Fibre Channel host driver's specifications do provide for the issuing of un-tagged commands on the Fibre Channel side, many legacy devices and drivers are still in use that do not support un-tagged command queuing. As a result, most Fibre Channel-to-SCSI networks do not possess the capability to issue un-tagged commands to streaming target devices and instead are faced with reduced network performance caused by streaming target devices rejecting tagged commands.
Furthermore, even if all the commands received by a streaming target device are un-tagged, any subsequent concurrent commands are rejected until the first command has completed execution, causing a decline in network performance and possible loss of data. Although normally the same host will not issue multiple concurrent commands to a streaming target device, in a multi-host Fibre Channel network environment, individual Fibre Channel hosts are unaware of the commands issued by the other hosts on the network to a particular streaming target device. Each host in the Fibre Channel network sees a target device as if it alone were speaking to the target device. As a result, a host on the Fibre Channel network can unknowingly issue an overlapping command to a streaming target device.
When a streaming target device receives a second command (or a third or fourth command) before completion of a prior command, it will send a check condition (overlapped_cmd) response to the host issuing the subsequent concurrent command. This can cause the host that issued the subsequent concurrent command(s) to go into error recovery.
The rejection of subsequent concurrent commands or of a tagged command by a streaming target device can result in a loss of data. For example, many tape back-up devices do not handle errors. If a tag command or multiple commands are issued to such a tape back-up device, it may abort the back-up. This can result in corrupted or lost data and in disruption of I/Os between host and target devices. Because of the inability of current command processing systems and methods to handle tagged commands (or multiple concurrent commands, whether tagged or un-tagged), to a streaming target device, some operations may have to be completely re-executed and not simply re-started.